#define _CRT_SECURE_NO_WARNINGS 1

#include "Stack.h"

void TestStack1() 
{
	Stack st;
	StackInit(&st);
	StackPush(&st, 1);
	StackPush(&st, 2);
	StackPush(&st, 3);
	StackPush(&st, 4);
	StackPush(&st, 4);

	StackPop(&st);
	StackPop(&st);
	StackPop(&st);
	StackPop(&st);
    //StackPop(&st);

	printf("%d", StackTop(&st));
	StackDestroy(&st);
}

void TestStack2() 
{
	// 入栈：1 2 3 4
	Stack st;
	StackInit(&st);
	StackPush(&st, 1);
	StackPush(&st, 2);
	StackPush(&st, 3);
	StackPush(&st, 4);

	// 出栈：4 3 2 1
	while (!StackEmpty(&st))
	{
		printf("%d ", StackTop(&st));
		StackPop(&st);
	}
	StackDestroy(&st);
}

void TestStack3() 
{
	// 入栈：1 2 3 4
	Stack st;
	StackInit(&st);
	StackPush(&st, 1);
	StackPush(&st, 2);
	StackPush(&st, 3);
	StackPush(&st, 4);

	// 提前出栈：4 3
	printf("%d ", StackTop(&st));
	StackPop(&st);
	printf("%d ", StackTop(&st));
	StackPop(&st);

	// 入栈：5  6
	StackPush(&st, 5);
	StackPush(&st, 6);

	// 出栈：6 5 2 1
	while (!StackEmpty(&st))
	{
		printf("%d ", StackTop(&st));
		StackPop(&st);
	}
	StackDestroy(&st);
}

void TestStack4()
{
	// 入栈：1 2 3 4
	Stack st;
	StackInit(&st);
	StackPush(&st, 1);
	StackPush(&st, 2);
	StackPush(&st, 3);

	display(&st);
	printf("%d\n", stackfull(&st));

	StackPush(&st, 4);

	display(&st);
	printf("%d\n", stackfull(&st));

	printf("%d\n", decimal_to_octal(10));
	printf("%d\n", decimal_to_octal(100));

	StackDestroy(&st);
}

int main() 
{
	//TestStack1();
	//TestStack2();
	TestStack3();
	//TestStack4();
	return 0;
}